import java.util.Arrays;
import java.util.function.IntToDoubleFunction;

public class Lanbdatest2 {
    /*
    掌握Arrays类的常用方法
     */
    public static void main(String[] args) {
        int[] arr =  {10, 20, 30, 40, 50, 60};
        System.out.println(Arrays.toString(arr));  // 返回数组内容

        int[] arr2 = Arrays.copyOfRange(arr, 1, 4);
        System.out.println(Arrays.toString(arr2));  // 拷贝数组  包前不包后

        int[] arr3 = Arrays.copyOf(arr, 10);  // 拷贝数组 可以指定新数组的长度
        int[] arr4 = Arrays.copyOf(arr, 1);
        System.out.println(Arrays.toString(arr3));
        System.out.println(Arrays.toString(arr4));

        // 把数组中的原数据改为新数据又存进去
        double[] prices = {80, 90, 100};
//        Arrays.setAll(prices, new IntToDoubleFunction() {
//            @Override
//            public double applyAsDouble(int value) {
//                // value = 0 1 2
//                return prices[value] * 0.8;
//            }
//        });

//        // 使用lanbda表达式对函数式接口进行简化
//         Arrays.setAll(prices, (int value) -> {
//                // value = 0 1 2
//                return prices[value] * 0.8;
//        });

//         // 参数类型可不写
//        Arrays.setAll(prices, (value) -> {
//            // value = 0 1 2
//            return prices[value] * 0.8;
//        });

//        // 如果只有一个参数,参数类型和()都可以省略
//        Arrays.setAll(prices, value -> {
//            // value = 0 1 2
//            return prices[value] * 0.8;
//        });


        // 如果Lambda表达式中方法体代码只有一行,可以省略大括号不写,同时省略分号！如果这行代码是return语句，也必须去掉return不写
        Arrays.setAll(prices, value -> prices[value] * 0.8);





        System.out.println(Arrays.toString(prices));

        // 排序(默认升序)
        int[] arr5 = {10, 20, 2, 40, 14, 60};
        Arrays.sort(arr5);
        System.out.println(Arrays.toString(arr5));

    }
}
